#include <iostream>
#include <cstring>
using namespace std;

/*
    2.带参数列表的构造函数写在类的外面
     里面声明的时候不要写参数列表，外面定义的时候写参数列表
*/

class Cat
{
public:
    // 写法1
    //  Cat(string name, int age) : name(name), age(age)
    //  {
    //      cout << "带参数列表的构造函数" << endl;
    //  }

    // 写法2  声明的时候不要写参数列表，外面定义的时候写参数列表
    Cat(string name, int age);

    void show()
    {
        cout << "name: " << name << " age: " << age << endl;
    }

private:
    string name;
    int age;
};

// 写法2
Cat::Cat(string name, int age) : name(name), age(age)
{
    cout << "带参数列表的构造函数" << endl;
}

int main()
{
    Cat cat1("Tom", 2);
    cat1.show();
    Cat cat2 = Cat("Jerry", 3); // 调用带参数列表的构造函数
    cat2.show();
    return 0;
}